package com.yuw.oophomework6;

import java.util.Random;
import java.util.Scanner;

public class StudentClass {
    // 属性
    private Student[] students;
    // 学生个数
    private int len;

    // 行为

    /**
     * 打印班级成绩信息
     */
    public void printClassStudentInfo() {
        if (students != null && students.length > 0) {
            // 遍历班级学生，并打印学生信息
            for (Student stu : students) {
                // 调用打印方法进行打印
                stu.printStuScore();
            }
        }
    }

    // 构造方法
    public StudentClass(int len) {
        this.len = len;
        // 根据学生人数 初始化数组
        if (len > 0) {
            students = new Student[len];
        } else {
            students = new Student[5];
        }

        // 使用随机数给该数组装入各系学生对象
        initStudentsArr(students);
    }

    /**
     * 使用随机数初始化学生数组
     *
     * @param students 学生数组对象
     */
    private void initStudentsArr(Student[] students) {
        // 使用随机数工具类 Random
        Random random = new Random();
        // 使用控制台输入工具类，从控制台输入信息
        Scanner scanner = new Scanner(System.in);
        // 初始化学生数组
        for (int i = 0; i < students.length; i++) {
            // 获取系别的随机数
            int type = random.nextInt(3);
            // 使用随机数确定学生系别
            if (type == 0) {
                // 英语系
                // 创建一个英语系的默认值学生对象
                EnglishStudent englishStudent = new EnglishStudent();
                // 使用控制台，手动输入学生信息
                System.out.println("请输入英语系学生姓名：");
                String stuName = scanner.next();
                englishStudent.setStuName(stuName);

                System.out.println("请输入英语系学生学号：");
                String stuNum = scanner.next();
                englishStudent.setStuNum(stuNum);

                System.out.println("请输入英语系学生性别：");
                String stuSex = scanner.next();
                englishStudent.setStuSex(stuSex);

                System.out.println("请输入英语系学生年龄：");
                int stuAge = scanner.nextInt();
                englishStudent.setStuAge(stuAge);

                System.out.println("请输入英语系学生演讲成绩：");
                Double stuSpeakScore = scanner.nextDouble();
                englishStudent.setSpeakScore(stuSpeakScore);

                System.out.println("请输入英语系学生期中成绩：");
                Double stuMiddleScore = scanner.nextDouble();
                englishStudent.setMiddleScore(stuMiddleScore);

                System.out.println("请输入英语系学生期末成绩：");
                Double stuLastScore = scanner.nextDouble();
                englishStudent.setLastScore(stuLastScore);

                // 初始化数组元素
                students[i] = englishStudent;
            } else if (type == 1) {
                // 计算机系
                // 创建一个计算机系的默认值学生对象
                ComputerStudent computerStudent = new ComputerStudent();
                // TODO 控制台输入各项参数进行设置

                // 初始化数组元素
                students[i] = computerStudent;
            } else {
                // 文学系
                // 创建一个文学系的默认值学生对象
                LiteratureStudent literatureStudent = new LiteratureStudent();
                // TODO 控制台输入各项参数进行设置

                // 初始化数组元素
                students[i] = literatureStudent;
            }
        }
    }
}
